package com.sprouting.ops.service;


import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sprouting.ops.dao.DromaraFileStorageDao;
import com.sprouting.ops.dao.OpsProductQuestionDao;
import com.sprouting.ops.interfaces.ConstantBase;
import com.sprouting.ops.model.DromaraFileStorage;
import com.sprouting.ops.model.OpsProductQuestion;
import com.sprouting.ops.model.ResultJson;
import com.sprouting.ops.model.qo.OpsProductQuestionQo;
import com.sprouting.ops.model.vo.OpsProductQuestionVo;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 产品常用问题(OpsProductQuestion)(OPS_PRODUCT_QUESTION) 表服务实现类
 *
 * @author ：lx（长沙麓谷）
 * @date 创建时间：2025-08-17 11:28:00
 */
@Service
@Slf4j
public class OpsProductQuestionService extends ServiceImpl<OpsProductQuestionDao, OpsProductQuestion> {

    @Resource
    private OpsProductQuestionDao opsProductQuestionDao;
    @Resource
    private DromaraFileStorageDao dromaraFileStorageDao;

    /**
     * 分页查询 产品常用问题
     * @param page 分页参数
     * @param query 查询参数
     * @return
     */
    public Page<OpsProductQuestionVo> getListPage(Page page, OpsProductQuestionQo query){
        return opsProductQuestionDao.getListPage(page, query);
    }

    /**
     * 保存产品常用问题
     * @param question 产品问题
     * @param list 产品问题相关的md图片
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveOpsProductQuestion(OpsProductQuestion question, List<DromaraFileStorage> list) {
        opsProductQuestionDao.insert(question);
        // md 图片
        if (CollUtil.isNotEmpty(list)){
            for (DromaraFileStorage dromaraFileStorage : list) {
                dromaraFileStorageDao.updateById(dromaraFileStorage);
            }
        }
    }

    /**
     * 更新产品常用问题
     * @param question 产品问题
     * @param list 产品问题相关的md图片
     */
    @Transactional(rollbackFor = Exception.class)
    public void updOpsProductQuestion(OpsProductQuestion question, List<DromaraFileStorage> list) {
        opsProductQuestionDao.updateById(question);

        if (CollUtil.isNotEmpty(list)){
            for (DromaraFileStorage dromaraFileStorage : list) {
                dromaraFileStorageDao.updateById(dromaraFileStorage);
            }
        }
    }

    /**
     * 删除产品常用问题
     * @param id 产品问题id
     * @param bindList 图片信息
     */
    @Transactional(rollbackFor = Exception.class)
    public void delOpsProductQuestion(String id, List<DromaraFileStorage> bindList) {
        opsProductQuestionDao.deleteById(id);

        // 删除图片
        if (CollUtil.isNotEmpty(bindList)){
            for (DromaraFileStorage dromaraFileStorage : bindList) {
                dromaraFileStorage.setTempFile(ConstantBase.TempFile.PRODUCTION_DEL);
                dromaraFileStorage.setDelTime(new Date());
                dromaraFileStorageDao.updateById(dromaraFileStorage);
            }
        }
    }

    /**
     * 首页-常见问题
     * @return
     */
    public List<OpsProductQuestionVo> getHomeProductQuestion() {
        return opsProductQuestionDao.getHomeProductQuestion();
    }
}
